package cn.didi.feidi.androidorder.manager;


import android.util.Log;

import org.afinal.simplecache.SimplceCache;

import cn.didi.feidi.androidorder.OrderApplication;

/**
 * Created by king on 2017/7/5.
 */

public class UserManager {
    public final static String defaultValue = "-1";
    /**
     * 保存时间
     */
    public static final int SAVE_TIME = SimplceCache.TIME_DAY * 5;

    private static SimplceCache userCache = SimplceCache.get(
            OrderApplication.getContext(), "deliver_user_167");

    private static String returnDefaultValue(String value, String defaultValue) {
        if (value != null && !"".equals(value))
            return value;
        return defaultValue;
    }

    /**
     * 是否绑定账号
     *
     * @return
     */
    public static boolean isBingAccount() {
        String isNullUserId = getUserId();
        String isNullToken = getToken();
        return !defaultValue.equals(isNullUserId) && !defaultValue.equals(isNullToken);
    }

    /**
     * 是否听单模式（非1 听单 1 不听单）
     *
     * @return
     */
    public static boolean isListenMode() {
        return !getListeningMode().equals("1");
    }


    /**
     * 是否开工
     *
     * @return
     */
    public static boolean isWorking() {
        return getWorkStatus().equals("0");
    }

    /**
     * @return the id
     */
    public static String getUserId() {
        return returnDefaultValue(userCache.getAsString("userid"), defaultValue);
    }

    /**
     * 只保存一定时间
     *
     * @param userId the id to set
     */
    public static void setUserId(String userId) {
        userCache.put("userid", userId, SAVE_TIME);
    }

    /**
     * @return tekon
     */
    public static String getToken() {
        return returnDefaultValue(userCache.getAsString("token_167"+getUserId()), defaultValue);
    }

    /**
     * 只保存一定时间(s)
     *
     * @param token the tekon to set
     */
    public static void setToken(String token) {
        userCache.put("token_167"+getUserId(), token, SAVE_TIME);
    }

    /**
     * @return tekon
     */
    public static String getPhone() {
        return returnDefaultValue(userCache.getAsString("phone_167"+getUserId()), defaultValue);
    }

    /**
     * 只保存一定时间(s)
     *
     * @param phone the tekon to set
     */
    public static void setPhone(String phone) {
        userCache.put("phone_167"+getUserId(), phone, SAVE_TIME);
    }

    /**
     * 得到工作模式（0 全部 1 实时 2 预约）
     *
     * @return
     */
    public static String getWorkMode() {
        return returnDefaultValue(userCache.getAsString("work_mode"+getUserId()), defaultValue);
    }

    /**
     * 设置工作模式（0 全部 1 实时 2 预约）
     *
     * @param workMode
     */
    public static void setWorkMode(String workMode) {
        userCache.put("work_mode"+getUserId(), workMode);
    }

    /**
     * 得到工作状态（0 开工 1 收工）
     *
     * @return
     */
    public static String getWorkStatus() {
        return returnDefaultValue(userCache.getAsString("work_status"+getUserId()), defaultValue);
    }

    /**
     * 设置工作状态（0 开工 1 收工）
     *
     * @param workStatus
     */
    public static void setWorkStatus(String workStatus) {
        userCache.put("work_status"+getUserId(), workStatus);
    }

    /**
     * 得到可载货量
     *
     * @return
     */
    public static String getEnableCapacity() {
        return returnDefaultValue(userCache.getAsString("enable_capacity"+getUserId()), defaultValue);
    }

    /**
     * 设置可载货量
     *
     * @param enableCapacity
     */
    public static void setEnableCapacity(String enableCapacity) {
        userCache.put("enable_capacity"+getUserId(), enableCapacity);
    }

    /**
     * 得到已经载货量
     *
     * @return
     */
    public static String getHadCapacity() {
        return returnDefaultValue(userCache.getAsString("had_capacity"+getUserId()), defaultValue);
    }

    /**
     * 设置已经载货量
     *
     * @param remainCapacity
     */
    public static void setHadCapacity(String remainCapacity) {
        userCache.put("had_capacity"+getUserId(), remainCapacity);
    }

    /**
     * 得到开始工作时间
     *
     * @return
     */
    public static String getWorkStartTime() {
        return returnDefaultValue(userCache.getAsString("work_start_time"+getUserId()), "1999-1-1 00:00:00");
    }

    /**
     * 设置开始工作时间
     *
     * @param workStartTime
     */
    public static void setWorkStartTime(String workStartTime) {
        userCache.put("work_start_time"+getUserId(), workStartTime);
    }

    /**
     * 得到结束工作时间
     *
     * @return
     */
    public static String getWorkEndTime() {
        return returnDefaultValue(userCache.getAsString("work_end_time"+getUserId()), "1999-1-1 00:00:00");
    }

    /**
     * 设置结束工作时间
     *
     * @param workEndTime
     */
    public static void setWorkEndTime(String workEndTime) {
        userCache.put("work_end_time"+getUserId(), workEndTime);
    }


    /**
     * 得到听单模式
     *
     * @return
     */
    public static String getListeningMode() {
        return returnDefaultValue(userCache.getAsString("listening_mode"+getUserId()), defaultValue);
    }

    /**
     * 设置听单模式
     *
     * @param listeningMode
     */
    public static void setListeningMode(String listeningMode) {
        userCache.put("listening_mode"+getUserId(), listeningMode);
    }

    /**
     * 清空登录信息（考虑个人信息也清空）
     */
    public static void clearBingAccountInfo() {
//        setUserId("-1");
//        setPhone("-1");
//        setToken("-1");
//        setNeedRequestAddress("-1");
        userCache.clear();
    }

    //是否需要向后台拿地址
    public static boolean getNeedRequestAddress() {

        int returnData = Integer.parseInt(returnDefaultValue(userCache.getAsString("need_request_address"+getUserId()), defaultValue));

        Log.d("PersonReceiveAddress", "getNeedRequestAddress: " + returnData);

        //不等于 1 的 就代表需要
        return returnData != 1;

    }

    //代表本地已经有数据了
    //1 代表 本地已经有用户的地址数据了
    public static void setNeedRequestAddress(String needRequestAddress) {
        userCache.put("need_request_address"+getUserId(), needRequestAddress);
    }

    /**
     * 用户名字
     *
     * @return name
     */
    public static String getName() {
        return returnDefaultValue(userCache.getAsString("name"+getUserId()), defaultValue);
    }

    /**
     * 用户名字
     * 只保存一定时间(s)
     *
     * @param name
     */
    public static void setName(String name) {
        userCache.put("name"+getUserId(), name, SAVE_TIME);
    }

    /**
     * 飞滴号
     *
     * @return name
     */
    public static String getFeidiAccount() {
        return returnDefaultValue(userCache.getAsString("feidi_account"+getUserId()), defaultValue);
    }

    /**
     * 飞滴号
     * 只保存一定时间(s)
     *
     * @param feidiAccount
     */
    public static void setFeidiAccount(String feidiAccount) {
        userCache.put("feidi_account"+getUserId(), feidiAccount, SAVE_TIME);
    }

    /**
     * 头像
     *
     * @return name
     */
    public static String getHeadPortrait() {
        return returnDefaultValue(userCache.getAsString("head_portrait"+getUserId()), "");
    }

    /**
     * 头像
     * 只保存一定时间(s)
     *
     * @param headPortrait
     */
    public static void setHeadPortrait(String headPortrait) {
        userCache.put("head_portrait"+getUserId(), headPortrait, SAVE_TIME);
    }

    /**
     * 飞滴号状态（未改为false，改过为true）
     *
     * @return name
     */
    public static boolean getFeidiAccountStatus() {
        return (boolean) userCache.getAsObject("feidi_account_status"+getUserId());
    }

    /**
     * 飞滴号状态
     *
     * @param feidiAccountStatus
     */
    public static void setFeidiAccountStatus(boolean feidiAccountStatus) {
        userCache.put("feidi_account_status"+getUserId(), feidiAccountStatus);
    }

    /**
     * 获取本地余额
     *
     * @return
     */
    public static Double getMoney() {
        Object money = userCache.getAsObject("money"+getUserId());
        if (money == null)
            return 0.0;
        return (Double) money;
    }

    /**
     * 设置本地余额
     *
     * @param money
     */
    public static void setMoney(Double money) {
        userCache.put("money"+getUserId(), money);
    }

    /**
     * 是否设置支付密码（默认没有false）
     *
     * @param isSet
     */
    public static void setPayPassword(boolean isSet) {
        userCache.put("isSetPayPassword"+getUserId(), isSet);
    }

    /**
     * 是否设置支付密码
     *
     * @return
     */
    public static boolean isSetPayPassword() {
        return (boolean) userCache.getAsObject("isSetPayPassword"+getUserId());
    }

    /**
     * 获取本地押金
     *
     * @return
     */
    public static Double getDeposit() {
        Object deposit = userCache.getAsObject("deposit"+getUserId());
        if (deposit == null)
            return 0.0;
        return (Double) deposit;
    }

    /**
     * 设置本地押金
     *
     * @param deposit
     */
    public static void setDeposit(Double deposit) {
        userCache.put("deposit"+getUserId(), deposit);
    }

    /**
     * 绑定人
     *
     * @return name
     */
    public static String getWaterDelverId() {
        return returnDefaultValue(userCache.getAsString("WaterDelverId"+getUserId()), "");
    }

    /**
     * 绑定人
     *
     * @param waterDelverId
     */
    public static void setWaterDelverId(String waterDelverId) {
        if (waterDelverId != null&&!"".equals(waterDelverId))
            userCache.put("WaterDelverId"+getUserId(), waterDelverId, SAVE_TIME);
    }

    /**
     * 是否设置是否下线（默认false）
     *
     * @param isSet
     */
    public static void setLoginConflict(boolean isSet) {
        userCache.put("isLoginConflict", isSet);
    }

    /**
     * 是否下线
     *
     * @return
     */
    public static boolean isLoginConflict() {
        Object isSet = userCache.getAsObject("isLoginConflict");
        if (isSet == null)
            isSet = false;
        return (boolean) isSet;
    }
}
